package com.ljx.List;

import sun.security.util.Length;

import java.util.Arrays;
import java.util.PriorityQueue;

/**
 * @author 李加喜
 * @Package com.ljx.List
 * @date 2021-11-30 10:20
 */
public class XiPai {
    public static void main(String[] args) {

    }
    public int[] advantageCount(int[] nums1, int[] nums2) {
        int n= nums1.length;
        // 对num2进行降序排序
        PriorityQueue<int[]> maxpq = new PriorityQueue<>((int[] n1, int[] n2) -> {
            return n2[1] - n1[1];
        });
        //将数据放到队列里面  第i个位置对应的是num2[i]的数据 而且还是将num2[i]的数据进行降序放到队列中 但数组本身并未发生改变
        for (int i=0;i<n;i++){
            maxpq.offer(new int[]{i,nums2[i]});
        }
        //对num1进行升序
        Arrays.sort(nums1);
        // num1[left]最小值  num1[right]最大值
        int left=0,right=n-1;
        int[] red=new int[n];
        while (!maxpq.isEmpty()){
            // poll会删除元素  但是peek不会删除元素
            int[] poll = maxpq.poll();
            // num是num2中最大的数
            int i=poll[0];int num=poll[1];
            if (num>=nums1[right]){
                // 如果当前打不过 就用最小的顶替
                red[i]=nums1[left];
                left++;
            }else {
                //当前可以打过
                red[i]=nums1[right];
                right--;
            }
        }
        return red;
    }
}
